<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="zh" xml:lang="zh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Concept: Service Portfolio</title>
<meta name="uma.type" content="Concept">
<meta name="uma.name" content="service_portfolio">
<meta name="uma.presentationName" content="Service Portfolio">
<meta name="element_type" content="concept">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="1.851952881072508E-305"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Concept: Service Portfolio</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/concept.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">This concept describes the advantages of services in enabling organizations to promote reuse by composing applications from a portfolio of services. The categorization of services for effective storage, discovery and retrieval of services from repositories is also discussed.</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../rup_soa_plugin/capabilitypatterns/design_services_45CC7C36.html" guid="_6Jd70DtdEdqPaeZADstHAA">Design Services</a>
</li>
<li>
<a href="./../../../rup_soa_plugin/tasks/identify_services_565F8B8A.html" guid="{0BF79161-A484-4C48-B72D-DA381DA05886}">Identify Services</a>
</li>
<li>
<a href="./../../../rup_soa_plugin/workproducts/soa_service_model_623494B9.html" guid="{E24679B7-19F1-483B-A1F1-578839C43888}">Service Model</a>
</li>
<li>
<a href="./../../../rup/capabilitypatterns/design_services_3B799678.html" guid="_VmaJQEudEdq5N8CMS7wKPw">设计服务</a>
</li>
<li>
<a href="./../../../rup/capabilitypatterns/design_services_DD4252F0.html" guid="_4p_rIDtzEdqp2s5UDCUHQA">设计服务</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Main Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><h3>
    <a id="Introduction" name="Introduction">Introduction</a>
</h3>
<p>
    One of the stated advantages of <a class="elementLink" href="./../../../rup_soa_plugin/guidances/concepts/service-oriented_architecture_8328ABAD.html" guid="8.613638237693525E-307">Service-Oriented Architecture</a> is the ability to get away from "silo" thinking within
    IT, the development of applications as islands of functionality. We tend to think of applications today as a vertical
    integration of a set of components built for this one purpose. It is often the case that development projects are set
    up around the development of, or maintenance of, an application and in some extreme cases development teams are solely
    responsible for a single application. The following picture represents a common business application structure, showing
    that really the only reuse between applications is often that they share a common database.
</p>
<p align="center">
    <img src="./../../../rup_soa_plugin/guidances/concepts/resources/co_soa_portfolio-02.gif" alt="Diagram is described in the textual content." width="206"     height="194" border="0" />
</p>
<p>
    Whereas the Service-Oriented approach would lead us to a more horizontal view of applications as an integration of
    services; so in fact all of our services are peers in a portfolio of capabilities from which applications, which can
    now be thought of as those parts of the IT solutions interacting with users, can be developed. The following
    demonstrates how the Ordering application can be developed as a set of user-facing portlets for integration into a
    portal server, and that the business logic is provided by a set of services which in turn utilize a set of
    infrastructure services.
</p>
<p align="center">
    <img src="./../../../rup_soa_plugin/guidances/concepts/resources/co_soa_portfolio-03.gif" alt="Diagram is described in the textual content." width="385"     height="175" border="0" />
</p>
<p>
    Services provide independently deployed components that are provided at a granularity that typically allows them to be
    entirely self-contained, this leads to services that manage and protect their own data stores rather than sharing
    database storage. This seems to be in contrast to moves by some companies over the years to introduce common data
    stores, or at least common data models that all applications share. On the contrary a service-oriented architecture
    tends to lead designers into developing not common data storage models but common message models to ease the
    integration of services through middleware technologies.
</p>
<h3>
    <a id="Enterprise_View" name="Enterprise_View">Enterprise View</a> <img src="./../../../rup/resources/top.gif"     alt="To top of page" border="0" width="26" height="20" />
</h3>
<p>
    As we mentioned before both projects and development teams have a limited scope and also a limited visibility into the
    wider capabilities, requirements and goals of the IT services and more importantly the business the services support.
    It is therefore critical that the move toward Service-Oriented Solutions and the horizontal view of integrated
    solutions that the architects on the IT side be able to visualize the portfolio of services supporting the business
    solutions required for the business itself to operate. One advantage to modeling services is that an abstract model is
    able to elide certain details and therefore present the broad view of the service portfolio in a scalable manner, i.e.
    in the presence of many services the model is able to present views of the portfolio supporting decision making for the
    <i><a class="elementLink" href="./../../../rup/roles/rup_software_architect_DB0BF177.html" guid="{4AC346F0-E6FC-4D2C-8410-2EDF8DDDC91D}">软件架构师</a></i> and <i><a class="elementLink" href="./../../../rup/roles/rup_designer_BA8DE74E.html" guid="{DB21F5EF-810B-4994-B120-79FA8774FA9D}">设计人员</a></i>.
</p>
<p>
    Obviously as organizations transition to Service-Oriented Architecture there will be a growth in services and so the
    portfolio will not start as a large model, but it is possible to capture the state of the transition in terms of
    available as well as planned services. <i><a class="elementLinkWithUserText" href="./../../../rup_soa_plugin/guidances/concepts/solution_partitioning_352116F8.html" guid="1.6501323286225543E-305">Service Partitioning</a></i> is also vital in organizing the model and categorizing
    services as the portfolio is developed.
</p>
<h3>
    <a id="Categorization" name="Categorization">Categorization of Services</a> <img src="./../../../rup/resources/top.gif"     alt="To top of page" border="0" width="26" height="20" />
</h3>
<p>
    It is important to be able to categorize the services in the portfolio in a number of ways, but most commonly we use
    terminology that describes the service's purpose, ownership or organization. To support this categorization or
    classification each Service Partition has a Classification property that can be used to denote the classification kind,
    the name of the partition becomes a value in that classification scheme.
</p>
<p>
    So, for example the following diagram, or some variant, has been developed by a number of companies to help visualize
    the "types" of services in the portfolio.Note that this categorization, while common, is simply one possible way to
    segment the service portfolio. In this example each partition is named with its classification property set to "zone".
</p>
<p align="center">
    <img src="./../../../rup_soa_plugin/guidances/concepts/resources/co_soa_portfolio-01.gif" alt="Diagram is described in the textual content." width="337"     height="253" border="0" />
</p>
<ul>
    <li>
        <b>User Interaction Services</b> are used to describe how the user interacts with the application; for example a
        service may need to assign work to a human user, there need to be services that know how to notify the user of this
        work and then notify the originating service of the work completion.
    </li>
    <li>
        <b>Application-Specific Services</b> are services that are developed as a part of a development activity that have
        been deemed as not appropriate for reuse and so are not considered a part of the portfolio. It is also possible
        that, as services are composable entities, that a service may be part of the portfolio yet nested services it uses
        are not published.
    </li>
    <li>
        <b>Process Integration Services</b> are services, usually provided by commercial middleware, that provide the
        choreography of services so that processes can be enacted in the middleware and utilize the services in the
        portfolio to implement a process.
    </li>
    <li>
        <b>Information Integration Services</b> are again commercial middleware services that provide services for the
        mediation of data formats and message content between services; for example a customer message can be generated by
        the service which is an aggregation of data retrieved from other services in the portfolio.
    </li>
    <li>
        <b>Business Services</b> are those services specific to the business, developed for the business and providing
        direct support to the applications developed to support the business. Examples might be CustomerMgmt, Inventory,
        HR, etc.
    </li>
    <li>
        <b>Infrastructure Services</b> are services that provide common IT functions required not only by the Business
        Services but by the integration services as well. Examples might be Messaging, Directory, Authentication, Legacy
        access, etc.
    </li>
</ul>
<p>
    For more examples of classification kinds see the concept <i><a class="elementLinkWithUserText" href="./../../../rup_soa_plugin/guidances/concepts/solution_partitioning_352116F8.html" guid="1.6501323286225543E-305">Service Partitioning.</a></i>
</p>
<h3>
    <a id="Service_Repositories" name="Service_Repositories">Service Repositories</a> <img     src="./../../../rup/resources/top.gif" alt="To top of page" border="0" width="26" height="20" />
</h3>
<p>
    So, apart from a model of the service portfolio it is important that Designers and Developers have access to service
    specifications in a detailed fashion at design and implementation. It is also possible for multiple services to
    implement the same specification and so a registry allowing queries of the form "all services implementing the
    IOrdering specification" allows for developers to compose solutions from existing services, and integration developers
    to identify which services to use to satisfy business or technical requirements.
</p>
<p>
    Service repositories are also able to use the classification values introduced using the service partitions above to
    pre-populate the values as metadata describing the services held by the repository.
</p>
<p>
    For example, a solution may call for a shipping service, the registry may identify 3 services that provide shipping,
    two provide secure message exchange but one only does so over Java Message Service (JMS) while the other provides SOAP
    over HTTP. Business requirements only specify that customer information be kept private and so a secure message
    exchange is required, IT standards recommend that JMS not be used to a remote service and so we have narrowed down our
    choice.
</p>
<p>
    The following presents some of the technical implementations available currently for service registries.
</p>
<ul>
    <li>
        <b>UDDI</b>; The web services standard registry, this has wide adoption and was intended to support both
        development and integration time queries. However, the level of customization required to keep track of all of the
        data associated with a service specification has certainly led to some questions about whether UDDI as it stands
        today is enough to support the enterprise service portfolio we discuss here.
    </li>
    <li>
        <b>RAS Repository</b>; The Reusable Asset Specification was intended to support a customizable metadata description
        for reusable assets, and does have a metadata profile for web services. While it was not the intent for RAS to
        provide a service portfolio it would be possible to do so for development time metadata although it is not
        currently appropriate for integration time queries.
    </li>
    <li>
        <b>Custom</b>; Many organizations, faced with these choices, have chosen to implement custom service repositories,
        managing a set of metadata or design documents for services at design time and associated web service artifacts for
        implementation time. In most cases a separate UDDI repository is then used when deploying production services for
        integration time queries.
    </li>
</ul></td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright">Copyright &copy; 2008 版权所有 东软集团股份有限公司&nbsp; 联系邮箱:<a href="mailto:tcoe@neusoft.com">tcoe@neusoft.com</a></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
